#include "MIKE_ZHOU_STM32_HAL.h"
#include <string.h> 

#ifdef HAL_RCC_MODULE_ENABLED
void MZ_STM32_HAL_RCC_ResetResetFlag(void)
{
	__HAL_RCC_CLEAR_RESET_FLAGS();
}

MZ_STM32_HAL_RCC_ResetType MZ_STM32_HAL_RCC_GetResetFlag(void)
{
	MZ_STM32_HAL_RCC_ResetType dat = {0};
	memset(&dat,0,sizeof(dat));
	
	#if defined STM32F4
	dat.CSR_Reg.BORRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_BORRST)&0x01;
	dat.CSR_Reg.PORRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_PORRST)&0x01;
	dat.CSR_Reg.PINRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_PINRST)&0x01;
	dat.CSR_Reg.SFTRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST)&0x01;
	dat.CSR_Reg.IWDGRST = __HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST)&0x01;
	dat.CSR_Reg.WWDGRST = __HAL_RCC_GET_FLAG(RCC_FLAG_WWDGRST)&0x01;
	dat.CSR_Reg.LPWRRST = __HAL_RCC_GET_FLAG(RCC_FLAG_LPWRRST)&0x01;
	#elif defined STM32L4
	dat.CSR_Reg.FWRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_FWRST)&0x01;
	dat.CSR_Reg.OBLRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_OBLRST)&0x01;
	dat.CSR_Reg.PINRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_PINRST)&0x01;
	dat.CSR_Reg.BORRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_BORRST)&0x01;
	dat.CSR_Reg.SFTRST 	= __HAL_RCC_GET_FLAG(RCC_FLAG_SFTRST)&0x01;
	dat.CSR_Reg.IWDGRST = __HAL_RCC_GET_FLAG(RCC_FLAG_IWDGRST)&0x01;
	dat.CSR_Reg.WWDGRST = __HAL_RCC_GET_FLAG(RCC_FLAG_WWDGRST)&0x01;
	dat.CSR_Reg.LPWRRST = __HAL_RCC_GET_FLAG(RCC_FLAG_LPWRRST)&0x01;
	#endif

	return dat;
}

#endif
